QUẢN LÝ NHÂN – HỘ KHẨU PHƯỜNG XÃ, QUẬN HUYỆN
- GiaoDien.java
- project /
1 /* Nhom thuc hien:
2 * - Huynh Huu An Email:huuan_huynh@yahoo.com
3 * - Nguyen Thanh Ho
4 * - Ha Duy Bao
5 * Ngay thuc hien: 28/11/2008
6 *==============================================================================
7 * Class GiaoDien V1.0
8 * Chuc nang: tao mot giao dien nguoi dung co the thao tac
9 * lop su kien viet chung trong file nay
10 *==============================================================================
11 */
12
13 import java.util.ArrayList;
14 import java.awt.*;
15 import java.awt.event.*;
16 import javax.swing.*;
17 import javax.swing.table.DefaultTableModel;
18
19 public class GiaoDien extends JFrame{
20 private JLabel jlbTop=new JLabel("CHUONG TRINH QUAN LY NHAN KHAU");
21 private JButton bt1,bt2,bt3,bt4,bt5,bt6,bt7,bt8,bt9,bt10,bt11,bt12,btSetCH;//=new JButton();
22 private JLabel lb1,lb2,lb3,lb4,lb5,lb6,lb7,lb8,lbTrangThai;//=new JLabel();
23 private JTextField tf1,tf2,tf3,tf4,tf5,tf6,tf7,tf8;//=new JTextField();//tf2:diachi,
24 private JCheckBox chkPhai,chkLuu;//=new JCheckBox();
25
26 private DefaultTableModel dtm,dtm2;
27 private JTable danhSachHo,danhSachTV;
28 //===============(0_0)================
29 private ArrayList<Nha>lstNha=new ArrayList<Nha>();
30 private Nha nhaTemp;//bien nha tam
31 public ArrayList<Nha> getLstNha(){
32 return lstNha;
33 }
34 //===============(0_0)================
35 public GiaoDien(){
36
37 setTitle("Quan ly Nhan Khau Phuong Xa V1.0");//
38 setDefaultCloseOperation(3);
39 setSize(600,600);
40 setLayout(new BorderLayout());
41
42 JPanel Top=new JPanel();
43 Top.setLayout(new FlowLayout());
44 Top.add(jlbTop);
45 this.add(Top,BorderLayout.NORTH);
46
47 JPanel Center=new JPanel();
48 this.add(Center,BorderLayout.CENTER);
49 Center.setLayout(new GridLayout(4,1));//chia bon phan giua
50 JPanel center1=new JPanel();center1.setLayout(new GridLayout(4,2));Center.add(center1);
51 center1.add(lb1=new JLabel("Chu ho:")); center1.add(tf1=new JTextField(5));tf1.setEnabled(false);
52 center1.add(lb2=new JLabel("So ho khau:")); center1.add(tf2=new JTextField(5));
53 center1.add(lb3=new JLabel("Dia chi:")); center1.add(tf3=new JTextField(5));
54 center1.add(lb4=new JLabel("Danh sach ho gia dinh")); center1.add(btSetCH=new JButton("Set lai chu ho"));
55 // tao bang
56 String[] tieude={"Stt","Chu Ho","So Ho Khau","Dia chi"};
57 dtm=new DefaultTableModel(tieude,0);
58 danhSachHo=new JTable(dtm);
59 JScrollPane jsp=new JScrollPane(danhSachHo);
60 Center.add(jsp);
61
62 JPanel center3=new JPanel();center3.setLayout(new GridLayout(4,2));Center.add(center3);
63 center3.add(lb5=new JLabel("Ho va ten")); center3.add(tf5=new JTextField(5));
64 center3.add(lb6=new JLabel("namsinh")); center3.add(tf6=new JTextField(5));
65 center3.add(lb7=new JLabel("So CMND")); center3.add(tf7=new JTextField(5));
66 center3.add(lb8=new JLabel("Phai")); center3.add(chkPhai=new JCheckBox("Check: Nam, unCheck: Nu",false));
67
68 // tao bang cho thanh vien trong gia dinh
69 String[] tieude2={"Stt","Ho Ten","namsinh","Phai","So CMND"};
70 dtm2=new DefaultTableModel(tieude2,0);
71 danhSachTV=new JTable(dtm2);
72 JScrollPane jsp2=new JScrollPane(danhSachTV);
73 Center.add(jsp2);
74 // su kien click cua bang thanh vien
75 danhSachTV.addMouseListener(new MouseAdapter(){
76 public void mouseClicked(MouseEvent e) {
77 int dongchon=danhSachTV.getSelectedRow();
78 Object o1,o2,o3,o4;
79 o1=danhSachTV.getValueAt(dongchon,1);
80 o2=danhSachTV.getValueAt(dongchon,2);
81 o3=danhSachTV.getValueAt(dongchon,3);
82 o4=danhSachTV.getValueAt(dongchon,4);
83
84 tf5.setText(o1.toString());
85 tf6.setText(o2.toString());
86 tf7.setText(o4.toString());
87 if(o3.toString().equals("Nam"))
88 chkPhai.setSelected(true);
89 else
90 chkPhai.setSelected(false);
91 }
92 });
93 // Su kien cua bang danhsachho
94 danhSachHo.addMouseListener(new MouseAdapter(){
95 // ham override
96 public void mouseClicked(MouseEvent e) {
97 int dongchon=danhSachHo.getSelectedRow();
98
99 Object o1=danhSachHo.getValueAt(dongchon,1);//ten chu ho
100 Object o2=danhSachHo.getValueAt(dongchon,2);//so ho khau
101 Object o3=danhSachHo.getValueAt(dongchon,3);//dia chi
102
103 tf1.setText(o1.toString());
104 tf2.setText(o2.toString());
105 tf3.setText(o3.toString());
106
107 //dua thong tin thanh vien cua nha duoc chon xuong bang thanh vien
108 capNhapDanhSachTV();
109 // reset textfield
110 tf5.setText("");
111 tf6.setText("");
112 tf7.setText("");
113 chkPhai.setSelected(false);
114 }
115 });
116
117 JPanel Right=new JPanel();Right.setLayout(new GridLayout(8,1));
118 //Right.add(bt1=new JButton("NO"));
119 Right.add(new JLabel());
120 Right.add(bt2=new JButton("THEM NHA"));
121 Right.add(bt3=new JButton("SUA TT NHA"));
122 Right.add(bt4=new JButton("XOA NHA"));
123
124 //Right.add(bt5=new JButton("NO"));
125 Right.add(new JLabel());
126 Right.add(bt6=new JButton("THEM NGUOI"));
127 Right.add(bt7=new JButton("SUA TT NGUOI"));
128 Right.add(bt8=new JButton("XOA NGUOI"));
129 //Right.add(new JLabel());
130 this.add(Right,BorderLayout.EAST);
131
132 JPanel Bottom=new JPanel();Bottom.setLayout(new GridLayout(2,1));
133 JPanel Bottom1=new JPanel();Bottom1.setLayout(new GridLayout(1,4));
134 //Bottom.add(bt9=new JButton("NO"));
135 Bottom1.add(chkLuu=new JCheckBox("Luu tu dong",true));
136 chkLuu.setToolTipText("Chon muc nay de thong tin tu dong luu xuong form ma khong can bam Luu.");
137 Bottom1.add(bt10=new JButton("Luu"));
138 Bottom1.add(bt11=new JButton("Thoat"));
139 //Bottom.add(bt12=new JButton("NO"));
140 Bottom1.add(new JLabel());
141 JPanel Bottom2=new JPanel();Bottom2.setLayout(new GridLayout(1,1));
142 Bottom2.add(lbTrangThai=new JLabel("Hehe..."));
143 lbTrangThai.setBorder(BorderFactory.createLineBorder(Color.black,1));
144 Bottom.add(Bottom1);
145 Bottom.add(Bottom2);
146 this.add(Bottom,BorderLayout.SOUTH);
147
148 //su kien cho button
149 bt2.addActionListener(new sukiencuatoi());
150 bt3.addActionListener(new sukiencuatoi());//sua thong tin ho gia dinh
151 bt4.addActionListener(new sukiencuatoi());//xoa nha dang duoc chon
152 bt6.addActionListener(new sukiencuatoi());//them nguoi
153 bt7.addActionListener(new sukiencuatoi());//Sua tt nguoi
154 bt8.addActionListener(new sukiencuatoi());//xoa nguoi
155 //bt9.addActionListener(new sukiencuatoi());//load
156 bt10.addActionListener(new sukiencuatoi());//luu
157 bt11.addActionListener(new sukiencuatoi());//thoat
158 btSetCH.addActionListener(new sukiencuatoi());//set lai chu ho
159 chkLuu.addActionListener(new sukiencuatoi());
160
161 //Tao su kien form load va form close
162 this.addWindowListener(new sukiencuaform());
163
164 }
165 class sukiencuaform implements WindowListener {
166 public void windowOpened(WindowEvent e){
167 //su kien load form
168 try{
169 MyDBengine asdf=new MyDBengine();
170 lstNha=(ArrayList<Nha>)asdf.DeserialObject("database.dat");
171 for(int i=0;i<lstNha.size();i++){
172 String[]tvb={""+(dtm.getRowCount()+1),lstNha.get(i).getTenChuHo(),lstNha.get(i).getSoHoKhau(),lstNha.get(i).getDiaChi()};
173 dtm.addRow(tvb);
174 }
175 }catch(Exception f){
176 System.out.println ("Co Loi khi load...\nKhong tim thay file: database.dat\n"+f);
177 }
178 }
179 public void windowClosed(WindowEvent e){
180 //System.out.println ("Closed");
181
182 }
183 public void windowClosing(WindowEvent e){
184 //System.out.println ("Closing");
185 if(chkLuu.isSelected())
186 luuThongTinXuongFile();
187 }
188 public void windowIconified(WindowEvent e){}
189 public void windowDeiconified(WindowEvent e){}
190 public void windowActivated(WindowEvent e){}
191 public void windowDeactivated(WindowEvent e){}
192
193 }
194 class sukiencuatoi implements ActionListener{
195 public void actionPerformed(ActionEvent e){
196 if(e.getSource()==bt2){ //them vao mot nha moi
197 try{
198 setTrangThai("Dang thuc hien viec them nha...");
199 String dc=tf3.getText();
200 String hk=tf2.getText();
201 if(dc.trim().equals("")||hk.trim().equals("")){
202 setTrangThai("Chua nhap du thong tin!");
203 throw new Exception("Chua nhap du thong tin!");
204 }
205 if(tonTaiNha(hk)){
206 setTrangThai("So ho khau da ton tai...");
207 throw new Exception("So ho khau da ton tai.");
208 }
209 nhaTemp=new Nha(dc,hk);
210 lstNha.add(nhaTemp);
211 String[]themvaobang={""+(dtm.getRowCount()+1),nhaTemp.getTenChuHo(),nhaTemp.getSoHoKhau(),nhaTemp.getDiaChi()};
212 dtm.addRow(themvaobang);
213 tf2.setText("");tf3.setText("");
214 setTrangThai("Them nha thanh cong...");
215 }
216 catch(Exception f){
217 JOptionPane.showMessageDialog(null,"Co loi khi them nha moi\n"+f);
218 }
219 }
220 if(e.getSource()==bt3){// sua thong tin nha dang chon
221 try{
222 setTrangThai("Dang thuc hien viec sua thong tin nha...");
223 String hk=tf2.getText();
224 String diachi=tf3.getText();
225 int nhadangchon=danhSachHo.getSelectedRow();
226 if(nhadangchon==-1)
227 { setTrangThai("Chua chon nha...");
228 throw new Exception("Chua chon nha can sua!");}
229 if(tonTaiNha(hk)&&!hk.equals(danhSachHo.getValueAt(nhadangchon,2).toString()))//neu da ton tai so ho khau khong tinh nha dang chon
230 throw new Exception("Trung so ho khau voi nha khac");
231 if(nhadangchon==-1)
232 { setTrangThai("Ban chua chon nha dinh sua...");
233 throw new Exception("Chua chon nha can sua thong tin!");
234 }
235 if(hk.trim().equals("")||diachi.trim().equals("")){
236 setTrangThai("Ban chua nhap du thong tin!");
237 throw new Exception("Chua nhap du thong tin");
238 }
239
240 Nha a =lstNha.get(nhadangchon);
241 //lstNha.remove(nhadangchon);
242 a.setDiaChi(diachi);
243 a.setSoHoKhau(hk);
244 lstNha.set(nhadangchon,a);
245
246 //cap nhap bang hien thi
247 capNhapDanhSachHo();
248 tf2.setText("");tf3.setText("");
249 setTrangThai("Da chinh sua thong tin nha xong..");
250
251 }catch(Exception f){
252 JOptionPane.showMessageDialog(null,"Error\n"+f);
253 }
254 }
255 if(e.getSource()==bt4){// xoa luon nha dang chon
256 try{
257 int dongchon=danhSachHo.getSelectedRow();
258 if(dongchon==-1){
259 setTrangThai("Ban chua chon nha de xoa!");
260 throw new Exception("Chua chon nha!");
261 }
262 lstNha.remove(dongchon);
263 capNhapDanhSachHo();
264 while(dtm2.getRowCount()>0)
265 dtm2.removeRow(0);
266
267 tf1.setText("");
268 tf2.setText("");
269 tf3.setText("");
270 setTrangThai("Da xoa nha xong...");
271 }catch(Exception f){
272 JOptionPane.showMessageDialog(null,"Khong xoa nha duoc!\n"+f);
273 }
274 }
275 if(e.getSource()==bt6){ //them vao nha mot nguoi moi
276 try{
277 String ten=tf5.getText();
278 int namsinh=(int)Double.parseDouble(tf6.getText());
279 boolean phai=chkPhai.isSelected();
280 String cmnd=tf7.getText();
281 if(namsinh<=0||namsinh>=3000)
282 throw new Exception("Nam sinh co van de");
283
284 //neu thong tin chua du
285 if(ten.trim().equals("")||namsinh==0){
286 setTrangThai("Chua nhap du thong tin...");
287 throw new Exception("Chua nhap du thong tin de them nguoi");
288
289 }else{
290 if(tonTaiNguoi(cmnd)&&!cmnd.equals(""))
291 throw new Exception("Nguoi co soCMND la "+cmnd+" da ton tai!");
292 NguoiTrongNha nguoiTemp=new NguoiTrongNha(ten,namsinh,phai,cmnd);
293 //them nguoi vao nha dang chon
294 int vitri=danhSachHo.getSelectedRow();//vi tri nha dang chon
295 Nha o=lstNha.get(vitri);
296 lstNha.remove(vitri);
297 o.themNguoi(nguoiTemp);
298 lstNha.add(vitri,o);
299 //dua thong tin len bang
300 String[] t={""+(dtm2.getRowCount()+1),ten,""+namsinh,nguoiTemp.getPhai(),cmnd}; //String[]tvb={"Stt",ten,namsinh,phai,cmnd};
301 dtm2.addRow(t);
302
303 // Cap nhap lai bang danh sach ho
304 if(dtm2.getRowCount()==1)
305 {
306 tf1.setText(ten);
307 danhSachHo.setValueAt(ten,vitri,1);
308 }
309 //reset cac textfield
310 tf5.setText("");
311 tf6.setText("");
312 tf7.setText("");
313 chkPhai.setSelected(false);
314 setTrangThai("Them nguoi xong.");
315 }
316 }catch(Exception f){
317 setTrangThai("Error...");
318 JOptionPane.showMessageDialog(null,"Co loi khi co them nguoi vao nha.\n"+f);
319 }
320 }//ket thu them nguoi
321 if(e.getSource()==bt7){//sua tt nguoi
322 try{
323 String ten=tf5.getText();
324 int namsinh=(int)Double.parseDouble(tf6.getText());
325 boolean phai=chkPhai.isSelected();
326 String cmnd=tf7.getText();
327
328 if(namsinh<=0||namsinh>=3000)
329 throw new Exception("Nam sinh co van de");
330 if(ten.trim().equals("")){
331 setTrangThai("Chua nhap du thong tin...");
332 throw new Exception("Chua nhap du thong tin de them nguoi");}
333 if(tonTaiNguoi(cmnd)&&!cmnd.equals(danhSachTV.getValueAt(danhSachTV.getSelectedRow(),4).toString()))
334 throw new Exception("Nguoi co soCMND la "+cmnd+" da ton tai!");
335
336 NguoiTrongNha nguoiTemp=new NguoiTrongNha(ten,namsinh,phai,cmnd);
337 //them nguoi vao nha dang chon
338 int nhadangchon=danhSachHo.getSelectedRow();//vi tri nha dang chon
339 int nguoidangchon=danhSachTV.getSelectedRow();
340 Nha o=lstNha.get(nhadangchon);
341 NguoiTrongNha n=o.getTatCaThanhVien().get(nguoidangchon);
342 boolean chuho=n.getChuHo();
343 nguoiTemp.setChuHo(chuho);
344 o.getTatCaThanhVien().set(nguoidangchon,nguoiTemp);
345 lstNha.set(nhadangchon,o);
346 //sua thong tin tren bang
347 capNhapDanhSachTV();
348
349 // Cap nhap lai bang danh sach ho
350 if(chuho)//neu sua trung chu ho
351 {
352 //capNhapDanhSachHo();
353 danhSachHo.setValueAt(ten,nhadangchon,1);
354 tf1.setText(ten);
355 }
356 //reset cac textfield
357 tf5.setText("");
358 tf6.setText("");
359 tf7.setText("");
360 chkPhai.setSelected(false);
361 setTrangThai("Sua thong tin nguoi xong.");
362
363 }catch(Exception f){
364 setTrangThai("Khong sua thong tin nguoi duoc!");
365 JOptionPane.showMessageDialog(null,"Co loi khi sua thong tin!\n"+f);
366 }
367 }
368 if(e.getSource()==bt8){ //xoa nguoi
369
370 int nhadangchon=danhSachHo.getSelectedRow();//vi tri nha dang chon
371 int nguoidangchon=danhSachTV.getSelectedRow();
372 if(nhadangchon!=-1){
373 Nha o=lstNha.get(nhadangchon);
374 NguoiTrongNha n=o.getTatCaThanhVien().get(nguoidangchon);
375 boolean chuho=n.getChuHo();
376 o.xoaNguoi(nguoidangchon);
377 lstNha.set(nhadangchon,o);
378
379 //dtm2.removeRow(danhSachTV.getSelectedRow());
380 // Cap nhap lai bang danh sach thanh vien
381 capNhapDanhSachTV();
382 //capNhapDanhSachTV();
383 if(chuho)//neu xoa trung chu ho
384 {
385 danhSachHo.setValueAt("Khong co",nhadangchon,1);
386 tf1.setText("Khong co");
387 setTrangThai("Ban vua xoa mat chu ho...");
388 JOptionPane.showMessageDialog(null,"Chu ho da mat!\nBan nen set lai chu ho!");
389 }
390 //reset cac textfield
391 tf5.setText("");
392 tf6.setText("");
393 tf7.setText("");
394 chkPhai.setSelected(false);
395 setTrangThai("Da xoa nguoi xong...");
396 // Cap nhap lai bang danh sach ho
397
398
399 }
400 else{
401 setTrangThai("Ban chua chon nguoi de xoa!");
402 }
403 }
404 if(e.getSource()==bt9){//load
405
406 }
407 if(e.getSource()==bt10){//luu
408 luuThongTinXuongFile();
409 setTrangThai("Da luu xong...");
410 }
411 if(e.getSource()==bt11){
412 if(chkLuu.isSelected())
413 luuThongTinXuongFile();
414 System.exit(0);
415 }
416 if(e.getSource()==btSetCH){
417 int nhadangchon=danhSachHo.getSelectedRow();
418 int nguoidangchon=danhSachTV.getSelectedRow();
419 setLaiChuHo(nhadangchon,nguoidangchon);
420 }
421 if(e.getSource()==chkLuu){
422 if(chkLuu.isSelected())
423 setTrangThai("Du lieu se duoc luu sau khi dong chuong trinh...");
424 else
425 setTrangThai("Du lieu se khong tu dong luu sau khi dong chuong trinh...");
426 }
427
428 } //ket thuc actionperform
429 } //ket thuc su kien cua toi
430 //====================== Cac ham ho tro =============================
431 void setLaiChuHo(int vtNha,int vtNguoi){
432 /* Chi dinh lai chu ho cho nha
433 * Chu ho chi se lai duoc khi nha do khong co chu ho
434 */
435 try{
436 //neu chua chon nguoi lam chu
437 if(vtNguoi==-1)
438 throw new Exception("Chua chon nguoi!");
439 //neu nha da co chu roi
440 if(lstNha.get(vtNha).tonTaiChuHo())
441 throw new Exception("Nha da co chu ho");
442 //con neu khong co chu ho
443 Nha n =lstNha.get(vtNha).setLaiChuHo(vtNguoi);
444 lstNha.set(vtNha,n);
445 danhSachHo.setValueAt(lstNha.get(vtNha).getTenChuHo(),vtNha,1);
446 //capNhapDanhSachHo();
447 tf1.setText(lstNha.get(vtNha).getTenChuHo());
448 setTrangThai("Da set lai chu ho xong!");
449 }catch(Exception f){
450 setTrangThai("Khong set lai chu ho duoc!");
451 JOptionPane.showMessageDialog(null,"Khong set lai chu ho duoc!\n"+f);
452 }
453 }
454 boolean tonTaiNguoi(String soCMND){
455 /* Ham kiem tra nha da ton tai hay chua thong qua so ho khau
456 * neu da ton tai return true, nguoc lai return false
457 * neu chua co so CMND van return false
458 */
459 if(soCMND.trim().equals(""))
460 return true;
461 for(int i=0;i<lstNha.size();i++){
462 nhaTemp=lstNha.get(i);
463 for(int j=0;j<nhaTemp.getTatCaThanhVien().size();j++){
464 NguoiTrongNha nguoiTemp=nhaTemp.getTatCaThanhVien().get(j);
465 if(nguoiTemp.getSoCMND().equals(soCMND))
466 return true;
467 }
468 }
469 return false;
470 }
471 boolean tonTaiNha(String soHoKhau){
472 /* Ham kiem tra nha da ton tai hay chua thong qua so ho khau
473 * neu da ton tai return true, nguoc lai return false
474 */
475 for(int i=0;i<lstNha.size();i++){
476 if(lstNha.get(i).getSoHoKhau().equals(soHoKhau))
477 return true;
478 }
479 return false;
480 }
481 void luuThongTinXuongFile(){
482 /* Dung ky thuat serialization de luu doi tuong xuong file
483 * Tham chieu toi lop MyDBengine
484 */
485 try{
486 MyDBengine asdf=new MyDBengine();
487 asdf.SerialObject("database.dat",lstNha);
488 }catch(Exception f){
489 JOptionPane.showMessageDialog(null,"Co loi khi luu.\n"+f);
490 }
491 }
492
493 void setTrangThai(String chuoi){
494 lbTrangThai.setText(chuoi);
495 }
496 void capNhapDanhSachHo(){
497 while(dtm.getRowCount()>0)
498 dtm.removeRow(0);
499
500 for(int i=0;i<lstNha.size();i++){
501 String[]tvb={""+(dtm.getRowCount()+1),lstNha.get(i).getTenChuHo(),lstNha.get(i).getSoHoKhau(),lstNha.get(i).getDiaChi()};
502 dtm.addRow(tvb);
503 }
504 }
505 void capNhapDanhSachTV(){
506 int dongchon=danhSachHo.getSelectedRow();
507 while(dtm2.getRowCount()>0)
508 dtm2.removeRow(0);
509
510 for(int i=0;i<lstNha.get(dongchon).getTatCaThanhVien().size();i++){
511 NguoiTrongNha ctv=lstNha.get(dongchon).getTatCaThanhVien().get(i);//thanh vien hien tai
512 String[] tvb={""+(dtm2.getRowCount()+1),ctv.getTen(),""+ctv.getnamsinh(),""+ctv.getPhai(),ctv.getCMND()};
513 dtm2.addRow(tvb);
514 }
515 }
516 }
2 * - Huynh Huu An Email:huuan_huynh@yahoo.com
3 * - Nguyen Thanh Ho
4 * - Ha Duy Bao
5 * Ngay thuc hien: 28/11/2008
6 *==============================================================================
7 * Class GiaoDien V1.0
8 * Chuc nang: tao mot giao dien nguoi dung co the thao tac
9 * lop su kien viet chung trong file nay
10 *==============================================================================
11 */
12
13 import java.util.ArrayList;
14 import java.awt.*;
15 import java.awt.event.*;
16 import javax.swing.*;
17 import javax.swing.table.DefaultTableModel;
18
19 public class GiaoDien extends JFrame{
20 private JLabel jlbTop=new JLabel("CHUONG TRINH QUAN LY NHAN KHAU");
21 private JButton bt1,bt2,bt3,bt4,bt5,bt6,bt7,bt8,bt9,bt10,bt11,bt12,btSetCH;//=new JButton();
22 private JLabel lb1,lb2,lb3,lb4,lb5,lb6,lb7,lb8,lbTrangThai;//=new JLabel();
23 private JTextField tf1,tf2,tf3,tf4,tf5,tf6,tf7,tf8;//=new JTextField();//tf2:diachi,
24 private JCheckBox chkPhai,chkLuu;//=new JCheckBox();
25
26 private DefaultTableModel dtm,dtm2;
27 private JTable danhSachHo,danhSachTV;
28 //===============(0_0)================
29 private ArrayList<Nha>lstNha=new ArrayList<Nha>();
30 private Nha nhaTemp;//bien nha tam
31 public ArrayList<Nha> getLstNha(){
32 return lstNha;
33 }
34 //===============(0_0)================
35 public GiaoDien(){
36
37 setTitle("Quan ly Nhan Khau Phuong Xa V1.0");//
38 setDefaultCloseOperation(3);
39 setSize(600,600);
40 setLayout(new BorderLayout());
41
42 JPanel Top=new JPanel();
43 Top.setLayout(new FlowLayout());
44 Top.add(jlbTop);
45 this.add(Top,BorderLayout.NORTH);
46
47 JPanel Center=new JPanel();
48 this.add(Center,BorderLayout.CENTER);
49 Center.setLayout(new GridLayout(4,1));//chia bon phan giua
50 JPanel center1=new JPanel();center1.setLayout(new GridLayout(4,2));Center.add(center1);
51 center1.add(lb1=new JLabel("Chu ho:")); center1.add(tf1=new JTextField(5));tf1.setEnabled(false);
52 center1.add(lb2=new JLabel("So ho khau:")); center1.add(tf2=new JTextField(5));
53 center1.add(lb3=new JLabel("Dia chi:")); center1.add(tf3=new JTextField(5));
54 center1.add(lb4=new JLabel("Danh sach ho gia dinh")); center1.add(btSetCH=new JButton("Set lai chu ho"));
55 // tao bang
56 String[] tieude={"Stt","Chu Ho","So Ho Khau","Dia chi"};
57 dtm=new DefaultTableModel(tieude,0);
58 danhSachHo=new JTable(dtm);
59 JScrollPane jsp=new JScrollPane(danhSachHo);
60 Center.add(jsp);
61
62 JPanel center3=new JPanel();center3.setLayout(new GridLayout(4,2));Center.add(center3);
63 center3.add(lb5=new JLabel("Ho va ten")); center3.add(tf5=new JTextField(5));
64 center3.add(lb6=new JLabel("namsinh")); center3.add(tf6=new JTextField(5));
65 center3.add(lb7=new JLabel("So CMND")); center3.add(tf7=new JTextField(5));
66 center3.add(lb8=new JLabel("Phai")); center3.add(chkPhai=new JCheckBox("Check: Nam, unCheck: Nu",false));
67
68 // tao bang cho thanh vien trong gia dinh
69 String[] tieude2={"Stt","Ho Ten","namsinh","Phai","So CMND"};
70 dtm2=new DefaultTableModel(tieude2,0);
71 danhSachTV=new JTable(dtm2);
72 JScrollPane jsp2=new JScrollPane(danhSachTV);
73 Center.add(jsp2);
74 // su kien click cua bang thanh vien
75 danhSachTV.addMouseListener(new MouseAdapter(){
76 public void mouseClicked(MouseEvent e) {
77 int dongchon=danhSachTV.getSelectedRow();
78 Object o1,o2,o3,o4;
79 o1=danhSachTV.getValueAt(dongchon,1);
80 o2=danhSachTV.getValueAt(dongchon,2);
81 o3=danhSachTV.getValueAt(dongchon,3);
82 o4=danhSachTV.getValueAt(dongchon,4);
83
84 tf5.setText(o1.toString());
85 tf6.setText(o2.toString());
86 tf7.setText(o4.toString());
87 if(o3.toString().equals("Nam"))
88 chkPhai.setSelected(true);
89 else
90 chkPhai.setSelected(false);
91 }
92 });
93 // Su kien cua bang danhsachho
94 danhSachHo.addMouseListener(new MouseAdapter(){
95 // ham override
96 public void mouseClicked(MouseEvent e) {
97 int dongchon=danhSachHo.getSelectedRow();
98
99 Object o1=danhSachHo.getValueAt(dongchon,1);//ten chu ho
100 Object o2=danhSachHo.getValueAt(dongchon,2);//so ho khau
101 Object o3=danhSachHo.getValueAt(dongchon,3);//dia chi
102
103 tf1.setText(o1.toString());
104 tf2.setText(o2.toString());
105 tf3.setText(o3.toString());
106
107 //dua thong tin thanh vien cua nha duoc chon xuong bang thanh vien
108 capNhapDanhSachTV();
109 // reset textfield
110 tf5.setText("");
111 tf6.setText("");
112 tf7.setText("");
113 chkPhai.setSelected(false);
114 }
115 });
116
117 JPanel Right=new JPanel();Right.setLayout(new GridLayout(8,1));
118 //Right.add(bt1=new JButton("NO"));
119 Right.add(new JLabel());
120 Right.add(bt2=new JButton("THEM NHA"));
121 Right.add(bt3=new JButton("SUA TT NHA"));
122 Right.add(bt4=new JButton("XOA NHA"));
123
124 //Right.add(bt5=new JButton("NO"));
125 Right.add(new JLabel());
126 Right.add(bt6=new JButton("THEM NGUOI"));
127 Right.add(bt7=new JButton("SUA TT NGUOI"));
128 Right.add(bt8=new JButton("XOA NGUOI"));
129 //Right.add(new JLabel());
130 this.add(Right,BorderLayout.EAST);
131
132 JPanel Bottom=new JPanel();Bottom.setLayout(new GridLayout(2,1));
133 JPanel Bottom1=new JPanel();Bottom1.setLayout(new GridLayout(1,4));
134 //Bottom.add(bt9=new JButton("NO"));
135 Bottom1.add(chkLuu=new JCheckBox("Luu tu dong",true));
136 chkLuu.setToolTipText("Chon muc nay de thong tin tu dong luu xuong form ma khong can bam Luu.");
137 Bottom1.add(bt10=new JButton("Luu"));
138 Bottom1.add(bt11=new JButton("Thoat"));
139 //Bottom.add(bt12=new JButton("NO"));
140 Bottom1.add(new JLabel());
141 JPanel Bottom2=new JPanel();Bottom2.setLayout(new GridLayout(1,1));
142 Bottom2.add(lbTrangThai=new JLabel("Hehe..."));
143 lbTrangThai.setBorder(BorderFactory.createLineBorder(Color.black,1));
144 Bottom.add(Bottom1);
145 Bottom.add(Bottom2);
146 this.add(Bottom,BorderLayout.SOUTH);
147
148 //su kien cho button
149 bt2.addActionListener(new sukiencuatoi());
150 bt3.addActionListener(new sukiencuatoi());//sua thong tin ho gia dinh
151 bt4.addActionListener(new sukiencuatoi());//xoa nha dang duoc chon
152 bt6.addActionListener(new sukiencuatoi());//them nguoi
153 bt7.addActionListener(new sukiencuatoi());//Sua tt nguoi
154 bt8.addActionListener(new sukiencuatoi());//xoa nguoi
155 //bt9.addActionListener(new sukiencuatoi());//load
156 bt10.addActionListener(new sukiencuatoi());//luu
157 bt11.addActionListener(new sukiencuatoi());//thoat
158 btSetCH.addActionListener(new sukiencuatoi());//set lai chu ho
159 chkLuu.addActionListener(new sukiencuatoi());
160
161 //Tao su kien form load va form close
162 this.addWindowListener(new sukiencuaform());
163
164 }
165 class sukiencuaform implements WindowListener {
166 public void windowOpened(WindowEvent e){
167 //su kien load form
168 try{
169 MyDBengine asdf=new MyDBengine();
170 lstNha=(ArrayList<Nha>)asdf.DeserialObject("database.dat");
171 for(int i=0;i<lstNha.size();i++){
172 String[]tvb={""+(dtm.getRowCount()+1),lstNha.get(i).getTenChuHo(),lstNha.get(i).getSoHoKhau(),lstNha.get(i).getDiaChi()};
173 dtm.addRow(tvb);
174 }
175 }catch(Exception f){
176 System.out.println ("Co Loi khi load...\nKhong tim thay file: database.dat\n"+f);
177 }
178 }
179 public void windowClosed(WindowEvent e){
180 //System.out.println ("Closed");
181
182 }
183 public void windowClosing(WindowEvent e){
184 //System.out.println ("Closing");
185 if(chkLuu.isSelected())
186 luuThongTinXuongFile();
187 }
188 public void windowIconified(WindowEvent e){}
189 public void windowDeiconified(WindowEvent e){}
190 public void windowActivated(WindowEvent e){}
191 public void windowDeactivated(WindowEvent e){}
192
193 }
194 class sukiencuatoi implements ActionListener{
195 public void actionPerformed(ActionEvent e){
196 if(e.getSource()==bt2){ //them vao mot nha moi
197 try{
198 setTrangThai("Dang thuc hien viec them nha...");
199 String dc=tf3.getText();
200 String hk=tf2.getText();
201 if(dc.trim().equals("")||hk.trim().equals("")){
202 setTrangThai("Chua nhap du thong tin!");
203 throw new Exception("Chua nhap du thong tin!");
204 }
205 if(tonTaiNha(hk)){
206 setTrangThai("So ho khau da ton tai...");
207 throw new Exception("So ho khau da ton tai.");
208 }
209 nhaTemp=new Nha(dc,hk);
210 lstNha.add(nhaTemp);
211 String[]themvaobang={""+(dtm.getRowCount()+1),nhaTemp.getTenChuHo(),nhaTemp.getSoHoKhau(),nhaTemp.getDiaChi()};
212 dtm.addRow(themvaobang);
213 tf2.setText("");tf3.setText("");
214 setTrangThai("Them nha thanh cong...");
215 }
216 catch(Exception f){
217 JOptionPane.showMessageDialog(null,"Co loi khi them nha moi\n"+f);
218 }
219 }
220 if(e.getSource()==bt3){// sua thong tin nha dang chon
221 try{
222 setTrangThai("Dang thuc hien viec sua thong tin nha...");
223 String hk=tf2.getText();
224 String diachi=tf3.getText();
225 int nhadangchon=danhSachHo.getSelectedRow();
226 if(nhadangchon==-1)
227 { setTrangThai("Chua chon nha...");
228 throw new Exception("Chua chon nha can sua!");}
229 if(tonTaiNha(hk)&&!hk.equals(danhSachHo.getValueAt(nhadangchon,2).toString()))//neu da ton tai so ho khau khong tinh nha dang chon
230 throw new Exception("Trung so ho khau voi nha khac");
231 if(nhadangchon==-1)
232 { setTrangThai("Ban chua chon nha dinh sua...");
233 throw new Exception("Chua chon nha can sua thong tin!");
234 }
235 if(hk.trim().equals("")||diachi.trim().equals("")){
236 setTrangThai("Ban chua nhap du thong tin!");
237 throw new Exception("Chua nhap du thong tin");
238 }
239
240 Nha a =lstNha.get(nhadangchon);
241 //lstNha.remove(nhadangchon);
242 a.setDiaChi(diachi);
243 a.setSoHoKhau(hk);
244 lstNha.set(nhadangchon,a);
245
246 //cap nhap bang hien thi
247 capNhapDanhSachHo();
248 tf2.setText("");tf3.setText("");
249 setTrangThai("Da chinh sua thong tin nha xong..");
250
251 }catch(Exception f){
252 JOptionPane.showMessageDialog(null,"Error\n"+f);
253 }
254 }
255 if(e.getSource()==bt4){// xoa luon nha dang chon
256 try{
257 int dongchon=danhSachHo.getSelectedRow();
258 if(dongchon==-1){
259 setTrangThai("Ban chua chon nha de xoa!");
260 throw new Exception("Chua chon nha!");
261 }
262 lstNha.remove(dongchon);
263 capNhapDanhSachHo();
264 while(dtm2.getRowCount()>0)
265 dtm2.removeRow(0);
266
267 tf1.setText("");
268 tf2.setText("");
269 tf3.setText("");
270 setTrangThai("Da xoa nha xong...");
271 }catch(Exception f){
272 JOptionPane.showMessageDialog(null,"Khong xoa nha duoc!\n"+f);
273 }
274 }
275 if(e.getSource()==bt6){ //them vao nha mot nguoi moi
276 try{
277 String ten=tf5.getText();
278 int namsinh=(int)Double.parseDouble(tf6.getText());
279 boolean phai=chkPhai.isSelected();
280 String cmnd=tf7.getText();
281 if(namsinh<=0||namsinh>=3000)
282 throw new Exception("Nam sinh co van de");
283
284 //neu thong tin chua du
285 if(ten.trim().equals("")||namsinh==0){
286 setTrangThai("Chua nhap du thong tin...");
287 throw new Exception("Chua nhap du thong tin de them nguoi");
288
289 }else{
290 if(tonTaiNguoi(cmnd)&&!cmnd.equals(""))
291 throw new Exception("Nguoi co soCMND la "+cmnd+" da ton tai!");
292 NguoiTrongNha nguoiTemp=new NguoiTrongNha(ten,namsinh,phai,cmnd);
293 //them nguoi vao nha dang chon
294 int vitri=danhSachHo.getSelectedRow();//vi tri nha dang chon
295 Nha o=lstNha.get(vitri);
296 lstNha.remove(vitri);
297 o.themNguoi(nguoiTemp);
298 lstNha.add(vitri,o);
299 //dua thong tin len bang
300 String[] t={""+(dtm2.getRowCount()+1),ten,""+namsinh,nguoiTemp.getPhai(),cmnd}; //String[]tvb={"Stt",ten,namsinh,phai,cmnd};
301 dtm2.addRow(t);
302
303 // Cap nhap lai bang danh sach ho
304 if(dtm2.getRowCount()==1)
305 {
306 tf1.setText(ten);
307 danhSachHo.setValueAt(ten,vitri,1);
308 }
309 //reset cac textfield
310 tf5.setText("");
311 tf6.setText("");
312 tf7.setText("");
313 chkPhai.setSelected(false);
314 setTrangThai("Them nguoi xong.");
315 }
316 }catch(Exception f){
317 setTrangThai("Error...");
318 JOptionPane.showMessageDialog(null,"Co loi khi co them nguoi vao nha.\n"+f);
319 }
320 }//ket thu them nguoi
321 if(e.getSource()==bt7){//sua tt nguoi
322 try{
323 String ten=tf5.getText();
324 int namsinh=(int)Double.parseDouble(tf6.getText());
325 boolean phai=chkPhai.isSelected();
326 String cmnd=tf7.getText();
327
328 if(namsinh<=0||namsinh>=3000)
329 throw new Exception("Nam sinh co van de");
330 if(ten.trim().equals("")){
331 setTrangThai("Chua nhap du thong tin...");
332 throw new Exception("Chua nhap du thong tin de them nguoi");}
333 if(tonTaiNguoi(cmnd)&&!cmnd.equals(danhSachTV.getValueAt(danhSachTV.getSelectedRow(),4).toString()))
334 throw new Exception("Nguoi co soCMND la "+cmnd+" da ton tai!");
335
336 NguoiTrongNha nguoiTemp=new NguoiTrongNha(ten,namsinh,phai,cmnd);
337 //them nguoi vao nha dang chon
338 int nhadangchon=danhSachHo.getSelectedRow();//vi tri nha dang chon
339 int nguoidangchon=danhSachTV.getSelectedRow();
340 Nha o=lstNha.get(nhadangchon);
341 NguoiTrongNha n=o.getTatCaThanhVien().get(nguoidangchon);
342 boolean chuho=n.getChuHo();
343 nguoiTemp.setChuHo(chuho);
344 o.getTatCaThanhVien().set(nguoidangchon,nguoiTemp);
345 lstNha.set(nhadangchon,o);
346 //sua thong tin tren bang
347 capNhapDanhSachTV();
348
349 // Cap nhap lai bang danh sach ho
350 if(chuho)//neu sua trung chu ho
351 {
352 //capNhapDanhSachHo();
353 danhSachHo.setValueAt(ten,nhadangchon,1);
354 tf1.setText(ten);
355 }
356 //reset cac textfield
357 tf5.setText("");
358 tf6.setText("");
359 tf7.setText("");
360 chkPhai.setSelected(false);
361 setTrangThai("Sua thong tin nguoi xong.");
362
363 }catch(Exception f){
364 setTrangThai("Khong sua thong tin nguoi duoc!");
365 JOptionPane.showMessageDialog(null,"Co loi khi sua thong tin!\n"+f);
366 }
367 }
368 if(e.getSource()==bt8){ //xoa nguoi
369
370 int nhadangchon=danhSachHo.getSelectedRow();//vi tri nha dang chon
371 int nguoidangchon=danhSachTV.getSelectedRow();
372 if(nhadangchon!=-1){
373 Nha o=lstNha.get(nhadangchon);
374 NguoiTrongNha n=o.getTatCaThanhVien().get(nguoidangchon);
375 boolean chuho=n.getChuHo();
376 o.xoaNguoi(nguoidangchon);
377 lstNha.set(nhadangchon,o);
378
379 //dtm2.removeRow(danhSachTV.getSelectedRow());
380 // Cap nhap lai bang danh sach thanh vien
381 capNhapDanhSachTV();
382 //capNhapDanhSachTV();
383 if(chuho)//neu xoa trung chu ho
384 {
385 danhSachHo.setValueAt("Khong co",nhadangchon,1);
386 tf1.setText("Khong co");
387 setTrangThai("Ban vua xoa mat chu ho...");
388 JOptionPane.showMessageDialog(null,"Chu ho da mat!\nBan nen set lai chu ho!");
389 }
390 //reset cac textfield
391 tf5.setText("");
392 tf6.setText("");
393 tf7.setText("");
394 chkPhai.setSelected(false);
395 setTrangThai("Da xoa nguoi xong...");
396 // Cap nhap lai bang danh sach ho
397
398
399 }
400 else{
401 setTrangThai("Ban chua chon nguoi de xoa!");
402 }
403 }
404 if(e.getSource()==bt9){//load
405
406 }
407 if(e.getSource()==bt10){//luu
408 luuThongTinXuongFile();
409 setTrangThai("Da luu xong...");
410 }
411 if(e.getSource()==bt11){
412 if(chkLuu.isSelected())
413 luuThongTinXuongFile();
414 System.exit(0);
415 }
416 if(e.getSource()==btSetCH){
417 int nhadangchon=danhSachHo.getSelectedRow();
418 int nguoidangchon=danhSachTV.getSelectedRow();
419 setLaiChuHo(nhadangchon,nguoidangchon);
420 }
421 if(e.getSource()==chkLuu){
422 if(chkLuu.isSelected())
423 setTrangThai("Du lieu se duoc luu sau khi dong chuong trinh...");
424 else
425 setTrangThai("Du lieu se khong tu dong luu sau khi dong chuong trinh...");
426 }
427
428 } //ket thuc actionperform
429 } //ket thuc su kien cua toi
430 //====================== Cac ham ho tro =============================
431 void setLaiChuHo(int vtNha,int vtNguoi){
432 /* Chi dinh lai chu ho cho nha
433 * Chu ho chi se lai duoc khi nha do khong co chu ho
434 */
435 try{
436 //neu chua chon nguoi lam chu
437 if(vtNguoi==-1)
438 throw new Exception("Chua chon nguoi!");
439 //neu nha da co chu roi
440 if(lstNha.get(vtNha).tonTaiChuHo())
441 throw new Exception("Nha da co chu ho");
442 //con neu khong co chu ho
443 Nha n =lstNha.get(vtNha).setLaiChuHo(vtNguoi);
444 lstNha.set(vtNha,n);
445 danhSachHo.setValueAt(lstNha.get(vtNha).getTenChuHo(),vtNha,1);
446 //capNhapDanhSachHo();
447 tf1.setText(lstNha.get(vtNha).getTenChuHo());
448 setTrangThai("Da set lai chu ho xong!");
449 }catch(Exception f){
450 setTrangThai("Khong set lai chu ho duoc!");
451 JOptionPane.showMessageDialog(null,"Khong set lai chu ho duoc!\n"+f);
452 }
453 }
454 boolean tonTaiNguoi(String soCMND){
455 /* Ham kiem tra nha da ton tai hay chua thong qua so ho khau
456 * neu da ton tai return true, nguoc lai return false
457 * neu chua co so CMND van return false
458 */
459 if(soCMND.trim().equals(""))
460 return true;
461 for(int i=0;i<lstNha.size();i++){
462 nhaTemp=lstNha.get(i);
463 for(int j=0;j<nhaTemp.getTatCaThanhVien().size();j++){
464 NguoiTrongNha nguoiTemp=nhaTemp.getTatCaThanhVien().get(j);
465 if(nguoiTemp.getSoCMND().equals(soCMND))
466 return true;
467 }
468 }
469 return false;
470 }
471 boolean tonTaiNha(String soHoKhau){
472 /* Ham kiem tra nha da ton tai hay chua thong qua so ho khau
473 * neu da ton tai return true, nguoc lai return false
474 */
475 for(int i=0;i<lstNha.size();i++){
476 if(lstNha.get(i).getSoHoKhau().equals(soHoKhau))
477 return true;
478 }
479 return false;
480 }
481 void luuThongTinXuongFile(){
482 /* Dung ky thuat serialization de luu doi tuong xuong file
483 * Tham chieu toi lop MyDBengine
484 */
485 try{
486 MyDBengine asdf=new MyDBengine();
487 asdf.SerialObject("database.dat",lstNha);
488 }catch(Exception f){
489 JOptionPane.showMessageDialog(null,"Co loi khi luu.\n"+f);
490 }
491 }
492
493 void setTrangThai(String chuoi){
494 lbTrangThai.setText(chuoi);
495 }
496 void capNhapDanhSachHo(){
497 while(dtm.getRowCount()>0)
498 dtm.removeRow(0);
499
500 for(int i=0;i<lstNha.size();i++){
501 String[]tvb={""+(dtm.getRowCount()+1),lstNha.get(i).getTenChuHo(),lstNha.get(i).getSoHoKhau(),lstNha.get(i).getDiaChi()};
502 dtm.addRow(tvb);
503 }
504 }
505 void capNhapDanhSachTV(){
506 int dongchon=danhSachHo.getSelectedRow();
507 while(dtm2.getRowCount()>0)
508 dtm2.removeRow(0);
509
510 for(int i=0;i<lstNha.get(dongchon).getTatCaThanhVien().size();i++){
511 NguoiTrongNha ctv=lstNha.get(dongchon).getTatCaThanhVien().get(i);//thanh vien hien tai
512 String[] tvb={""+(dtm2.getRowCount()+1),ctv.getTen(),""+ctv.getnamsinh(),""+ctv.getPhai(),ctv.getCMND()};
513 dtm2.addRow(tvb);
514 }
515 }
516 }